home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet internetowy / Rozne / HTTrack 3.40-2 / httrack-3.40-2.exe / {app} / src_win / WinHTTrack / trans.cpp < prev    next >
C/C++ Source or Header  |  2004-07-14  |  13KB  |  466 lines

  1. // trans.cpp : implementation file
  2. //
  3.  
  4. #include "stdafx.h"
  5. #include "Shell.h"
  6. #include "trans.h"
  7.  
  8. extern "C" {
  9.   #include "HTTrackInterface.h"
  10.   #include "htscore.h"
  11.   #include "htslib.h"
  12. }
  13.  
  14. #ifdef _DEBUG
  15. #define new DEBUG_NEW
  16. #undef THIS_FILE
  17. static char THIS_FILE[] = __FILE__;
  18. #endif
  19.  
  20. extern char OPTIONhh[32];
  21. extern char OPTIONmm[32];
  22. extern char OPTIONss[32];
  23. extern HICON httrack_icon;
  24.  
  25. // Chargement des librairies RAS
  26. #if USE_RAS
  27. extern CDynamicRAS* LibRas;
  28. extern int LibRasUse;
  29. #endif
  30.  
  31. // Helper
  32. extern LaunchHelp* HtsHelper;
  33.  
  34. // reference sur objet
  35. extern Ctrans* dialog2;
  36.  
  37. /* Main WizTab frame */
  38. #include "WizTab.h"
  39. extern CWizTab* this_CWizTab;
  40. extern CWizTab* this_intCWizTab2;
  41.  
  42. /* Main splitter frame */
  43. #include "DialogContainer.h"
  44. #include "splitter.h"
  45. extern CSplitterFrame* this_CSplitterFrame;
  46.  
  47. // prise en compte prefs
  48. extern void compute_options() ;
  49.  
  50. /* Back to FirstInfo */
  51. //#include "FirstInfo.h"
  52.  
  53. /* Dialog final */
  54. #include "inprogress.h"
  55.  
  56. /* maintab */
  57. #include "maintab.h"
  58. extern CMainTab* maintab;
  59.  
  60. /* newproj */
  61. #include "newproj.h"
  62. extern CNewProj* dialog0;
  63.  
  64. extern CShellApp* CShellApp_app;
  65.  
  66. /* debug */
  67. extern FILE* fp_debug;
  68.  
  69.  
  70. /////////////////////////////////////////////////////////////////////////////
  71. // Ctrans dialog
  72.  
  73. IMPLEMENT_DYNCREATE(Ctrans, CPropertyPage)
  74.  
  75. Ctrans::Ctrans()
  76.     : CPropertyPage(Ctrans::IDD)
  77. {
  78.   dialog2=this;    /* NOTER REFERENCE */
  79.   hms=0;
  80.     //{{AFX_DATA_INIT(Ctrans)
  81.     m_hh = _T("");
  82.     m_mm = _T("");
  83.     m_ss = _T("");
  84.     m_rasid = -1;
  85.     m_rasdisc = FALSE;
  86.     m_rasshut = FALSE;
  87.     //}}AFX_DATA_INIT
  88. }
  89.  
  90. Ctrans::~Ctrans() {
  91.   dialog2=NULL;
  92. }
  93.  
  94. void Ctrans::DoDataExchange(CDataExchange* pDX)
  95. {
  96.     CPropertyPage::DoDataExchange(pDX);
  97.     //{{AFX_DATA_MAP(Ctrans)
  98.     DDX_Control(pDX, IDC_rasshut, m_ctl_rasshut);
  99.     DDX_Control(pDX, IDC_rasdisc, m_ctl_rasdisc);
  100.     DDX_Control(pDX, IDC_cnx, m_ctlcnx);
  101.     DDX_Control(pDX, IDC_rasid, m_ctlrasid);
  102.     DDX_Control(pDX, IDC_wait, m_ctl_wait);
  103.     DDX_Control(pDX, IDC_ss, m_ctl_ss);
  104.     DDX_Control(pDX, IDC_mm, m_ctl_mm);
  105.     DDX_Control(pDX, IDC_hh, m_ctl_hh);
  106.     DDX_Text(pDX, IDC_hh, m_hh);
  107.     DDV_MaxChars(pDX, m_hh, 2);
  108.     DDX_Text(pDX, IDC_mm, m_mm);
  109.     DDV_MaxChars(pDX, m_mm, 2);
  110.     DDX_Text(pDX, IDC_ss, m_ss);
  111.     DDV_MaxChars(pDX, m_ss, 2);
  112.     DDX_CBIndex(pDX, IDC_rasid, m_rasid);
  113.     DDX_Check(pDX, IDC_rasdisc, m_rasdisc);
  114.     DDX_Check(pDX, IDC_rasshut, m_rasshut);
  115.     //}}AFX_DATA_MAP
  116. }
  117.  
  118.  
  119. BEGIN_MESSAGE_MAP(Ctrans, CPropertyPage)
  120.     //{{AFX_MSG_MAP(Ctrans)
  121.     ON_EN_CHANGE(IDC_hh, OnChangehh)
  122.     ON_WM_HELPINFO()
  123.     ON_CBN_SELCHANGE(IDC_rasid, OnSelchangerasid)
  124.     ON_CBN_DROPDOWN(IDC_rasid, OnDropdownrasid)
  125.     ON_WM_SHOWWINDOW()
  126.     ON_BN_CLICKED(IDC_rasdisc, Onrasdisc)
  127.     //}}AFX_MSG_MAP
  128.     ON_NOTIFY_EX( TTN_NEEDTEXT, 0, OnToolTipNotify )
  129.   ON_COMMAND(ID_HELP_FINDER,OnHelpInfo2)
  130.   ON_COMMAND(ID_HELP,OnHelpInfo2)
  131.     ON_COMMAND(ID_DEFAULT_HELP,OnHelpInfo2)
  132. END_MESSAGE_MAP()
  133.  
  134. /////////////////////////////////////////////////////////////////////////////
  135. // Ctrans message handlers
  136.  
  137. void Ctrans::OnChangehh() 
  138. {
  139.   CString st="";
  140.   char tempo[256];
  141.  
  142.   // TODO: If this is a RICHEDIT control, the control will not
  143.     // send this notification unless you override the CPropertyPage::OnInitDialog()
  144.     // function to send the EM_SETEVENTMASK message to the control
  145.     // with the ENM_CHANGE flag ORed into the lParam mask.
  146.  
  147.   // TODO: Add your control notification handler code here
  148.  
  149.   GetDlgItemText(IDC_hh,st);
  150.   strcpybuff(tempo,st);
  151.  
  152.   if ((strlen(tempo)>0)!=hms) {
  153.     hms=!hms;
  154.     if (strlen(tempo)>0) {
  155.       m_ctl_wait.ModifyStyle(WS_DISABLED,0);
  156.     }
  157.     else {
  158.       m_ctl_wait.ModifyStyle(0,WS_DISABLED);
  159.     }    
  160.     m_ctl_wait.RedrawWindow();
  161.  }  
  162.  
  163. // m_wait=TRUE; 
  164.  
  165. }
  166.  
  167. BOOL Ctrans::OnInitDialog() 
  168. {
  169.     CPropertyPage::OnInitDialog();
  170.  
  171.   ((CButton*)GetDlgItem(IDC_select_start))->SetCheck(1);
  172.   strcpybuff(RasString,"");
  173.   
  174.   SetIcon(httrack_icon,false);
  175.   SetIcon(httrack_icon,true);  
  176.     EnableToolTips(true);     // TOOL TIPS
  177.  
  178.   // Patcher l'interface pour les Franτais ;-)
  179.   if (LANG_T(-1)) {    // Patcher en franτais
  180.     //SetDlgItemTextCP(this, ,"");
  181.     SetWindowTextCP(this, LANG(LANG_J9) /*"DΘmarrer.."*/);
  182.     SetDlgItemTextCP(this, IDC_select_start,LANG(LANG_J10) /*"Vous pouvez dΘmarrer le miroir en pressant la touche DEMARRER,\nou dΘfinir avant les options de connexion"*/);
  183.     SetDlgItemTextCP(this, IDC_select_save,LANG(LANG_J10b));
  184.     SetDlgItemTextCP(this, IDC_STATIC_delay,LANG(LANG_J11) /*"Retarder"*/);
  185.     SetDlgItemTextCP(this, IDC_wait,LANG(LANG_J12) /*"Attendre avant de commencer jusqu'α: (hh/mm/ss)"*/);
  186.     //SetDlgItemTextCP(this, IDC_avant,LANG(LANG_BACK) /*"<- AVANT"*/);
  187.     SetDlgItemTextCP(this, IDCANCEL,LANG(LANG_QUIT) /*"Quitter"*/);
  188.     SetDlgItemTextCP(this, IDOK,LANG(LANG_J13) /*"DEMARRER!"*/);
  189.     SetDlgItemTextCP(this, IDC_STATIC_ras,LANG(LANG_J14) /*"Connexion provider"*/);
  190.     SetDlgItemTextCP(this, IDC_cnx,LANG(LANG_J15) /*"Connecter α ce provider"*/);
  191.     SetDlgItemTextCP(this, IDC_rasdisc,LANG_J16);
  192.   }
  193.  
  194.   // liste vide pour commencer
  195.   isfilled=FALSE;
  196.   FillProviderList(0);
  197.   m_ctlrasid.SetCurSel(0);
  198.  
  199.     return TRUE;  // return TRUE unless you set the focus to a control
  200.                   // EXCEPTION: OCX Property Pages should return FALSE
  201. }
  202.  
  203.  
  204. void Ctrans::FillProviderList(int fill) 
  205. {
  206. // remplssage su champ des noms de connexion RAS
  207. #if USE_RAS
  208.   if (LibRasUse && fill) {
  209.     DWORD size;
  210.     RASENTRYNAME* adr;
  211.     int count=256;
  212.     size = sizeof(RASENTRYNAME)*(count+2);
  213.     adr = (RASENTRYNAME*) (char*) calloc(size,1);
  214.     if (adr) {
  215.       DWORD ent;
  216.       int i;
  217.       for(i=0;i<count;i++) {
  218.         adr[i].dwSize=sizeof(RASENTRYNAME);
  219.         strcpybuff(adr[i].szEntryName,"");
  220.       }
  221.       if (LibRas->RasEnumEntries(NULL,NULL,(RASENTRYNAME*) adr,&size,&ent) == 0) {
  222.         int i;
  223.         GetDlgItem(IDC_STATIC_ras)->ModifyStyle(WS_DISABLED,0);
  224.         GetDlgItem(IDC_STATIC_ras)->RedrawWindow();
  225.         m_ctlrasid.ResetContent();
  226.         m_ctlrasid.InsertString(-1,LANG(LANG_J2 /*"do not connect to a provider (already connected)","pas de connexion α un provider (dΘja connectΘ)"*/));
  227.         for(i=0;i<(int) ent;i++) {
  228.           m_ctlrasid.InsertString(-1,adr[i].szEntryName);
  229.         }
  230.       }
  231.       free(adr);
  232.     }
  233.   } else
  234. #endif
  235.   {
  236.     if (LibRasUse) {
  237.       GetDlgItem(IDC_STATIC_ras)->ModifyStyle(WS_DISABLED,0);
  238.     } else {
  239.       GetDlgItem(IDC_STATIC_ras)->ModifyStyle(0,WS_DISABLED);
  240.     }
  241.     GetDlgItem(IDC_STATIC_ras)->RedrawWindow();
  242.     m_ctlrasid.ResetContent();
  243.     m_ctlrasid.InsertString(-1,LANG_J2b);
  244.   }
  245. }
  246.  
  247.  
  248. // ------------------------------------------------------------
  249. // TOOL TIPS
  250. //
  251. // ajouter dans le .cpp:
  252. // remplacer les deux Wid1:: par le nom de la classe::
  253. // dans la message map, ajouter
  254. // ON_NOTIFY_EX( TTN_NEEDTEXT, 0, OnToolTipNotify )
  255. // dans initdialog ajouter
  256. // EnableToolTips(true);     // TOOL TIPS
  257. //
  258. // ajouter dans le .h:
  259. // char* GetTip(int id);
  260. // et en generated message map
  261. // afx_msg BOOL OnToolTipNotify( UINT id, NMHDR * pNMHDR, LRESULT * pResult );
  262. BOOL Ctrans::OnToolTipNotify( UINT id, NMHDR * pNMHDR, LRESULT * pResult )
  263. {
  264.   TOOLTIPTEXT *pTTT = (TOOLTIPTEXT *)pNMHDR;
  265.   UINT nID =pNMHDR->idFrom;
  266.   if (pTTT->uFlags & TTF_IDISHWND)
  267.   {
  268.     // idFrom is actually the HWND of the tool
  269.     nID = ::GetDlgCtrlID((HWND)nID);
  270.     if(nID)
  271.     {
  272.       char* st=GetTip(nID);
  273.       if (st != "") {
  274.         pTTT->lpszText = st;
  275.         pTTT->hinst = AfxGetResourceHandle();
  276.         return(TRUE);
  277.       }
  278.     }
  279.   }
  280.   return(FALSE);
  281. }
  282. char* Ctrans::GetTip(int ID)
  283. {
  284.   switch(ID) {
  285.   case IDC_rasid: return LANG_J8b; break;
  286.     case IDC_hh: case IDC_mm: case IDC_ss: 
  287.       return LANG(LANG_J3); break; // "Schedule the mirror","Programmer un miroir"); break;
  288.     case IDCANCEL:  return LANG(LANG_J4); break; // "Quit WinHTTrack","Quitter WinHTTrack"); break;
  289.     case IDC_avant: return LANG(LANG_J5); break; // "Back to the start page","Retour α la premiΦre page"); break;
  290.     case IDOK:      return LANG(LANG_J6); break; // "Click to start!","Clic pour dΘmarrer!"); break;
  291.     case IDC_rasdisc: return LANG_J17; break;
  292.     //case : return ""; break;
  293.   }
  294.   return "";
  295. }
  296. // TOOL TIPS
  297. // ------------------------------------------------------------
  298.  
  299.  
  300.  
  301.  
  302.  
  303.  
  304. // Appel aide
  305. void Ctrans::OnHelpInfo2() {
  306.   (void) OnHelpInfo(NULL);
  307. }
  308.  
  309. BOOL Ctrans::OnHelpInfo(HELPINFO* dummy) 
  310. {
  311.   //return CPropertyPage::OnHelpInfo(pHelpInfo);
  312.   HtsHelper->Help();
  313.   return true;
  314.   //AfxGetApp()->WinHelp(0,HELP_FINDER);    // Index du fichier Hlp
  315.   //return true;
  316. }
  317.  
  318. void Ctrans::OnSelchangerasid() 
  319. {
  320.   m_ctl_rasdisc.SetCheck(1);
  321.   int r = m_ctlrasid.GetCurSel();
  322.   if (r!=CB_ERR) {
  323.     if (r==0) {
  324.       m_ctlcnx.ModifyStyle(0,WS_DISABLED); 
  325.     } else {
  326.       m_ctlcnx.ModifyStyle(WS_DISABLED,0); 
  327.     }
  328.     m_ctlcnx.RedrawWindow();
  329.   }
  330. }
  331.  
  332. BOOL Ctrans::OnWizardFinish( )
  333. {
  334.   BOOL DoLaunchMirror = ((CButton*)GetDlgItem(IDC_select_start))->GetCheck();
  335.  
  336.     // TODO: Add extra validation here
  337.   int r = m_ctlrasid.GetCurSel();
  338.   strcpybuff(RasString,"");
  339.   if ((r!=CB_ERR) && (r != 0)) {    // sΘlection provider
  340.     if (m_ctlrasid.GetLBText(r,RasString) != CB_ERR) {
  341.       if (strlen(RasString)>0) {
  342.         //
  343. #if USE_RAS
  344.         if (LibRasUse) {
  345.           if (strlen(RasString)>0) {    // sΘlection provider
  346.             BOOL ifpass;
  347.             dial.dwSize = sizeof(dial);
  348.             strcpybuff(dial.szEntryName,RasString);
  349.             strcpybuff(dial.szPhoneNumber,"");
  350.             strcpybuff(dial.szCallbackNumber,"");
  351.             strcpybuff(dial.szUserName,"");
  352.             strcpybuff(dial.szPassword,"");
  353.             strcpybuff(dial.szDomain,"");
  354.             if (!LibRas->RasGetEntryDialParams(NULL,&dial,&ifpass)) {
  355.               if (!ifpass) {    // pas de pass
  356.                 AfxMessageBox(LANG(LANG_J7 /*"No saved password for this connection!","Pas de mot de passe sauvΘ pour cette connexion!"*/));
  357.                 return 0;    // cancel
  358.               }
  359.             } else {
  360.               AfxMessageBox(LANG(LANG_J8 /*"Can not get RAS setup","Impossible d'obtenir les paramΦtres de connexion"*/));
  361.               return 0;    // cancel
  362.             }
  363.           }
  364.         }
  365. #endif
  366.         //
  367.       }
  368.     }
  369.   }
  370.  
  371.   /* prise en compte des options */
  372.   UpdateData(TRUE);         // DoDataExchange
  373.   compute_options() ;
  374.  
  375.   // Index "top" si nΘcessaire!
  376.   if (maintab->m_option3.m_windebug) {
  377.     fp_debug=fopen("winhttrack.log","wb");
  378.   } else {
  379.     fp_debug = NULL;
  380.   }
  381.   if (fp_debug) {
  382.     fprintf(fp_debug,"Writing winprofile.ini\r\n");
  383.     fflush(fp_debug);
  384.   }
  385.   /*
  386.   {
  387.     char path[1024];
  388.     strcpybuff(path,dialog0->GetBasePath());
  389.     make_empty_index(path);
  390.   }
  391.   */
  392.   
  393.   // sauver profile dans hts-cache si besoin est
  394.   //if(maintab->m_option3.m_cache) {
  395.   Save_current_profile(0);
  396.   //}
  397.   // FIN sauver profile dans hts-cache si besoin est
  398.   if (fp_debug) {
  399.     if (DoLaunchMirror)
  400.       fprintf(fp_debug,"Profile written, launching mirror\r\n");
  401.     else
  402.       fprintf(fp_debug,"Profile written, saving settings\r\n");
  403.     fflush(fp_debug);
  404.   }
  405.   CShellApp_app->end_path=dialog0->GetBasePath();
  406.   CShellApp_app->end_path_complete=dialog0->GetPath();
  407.  
  408.   if (DoLaunchMirror) {
  409.     /* Switcher sur Cinprogress! */
  410.     /*this_CSplitterFrame->SetNewView(0,1,RUNTIME_CLASS(Cinprogress));*/
  411.     this_CWizTab->ModifyStyle(WS_VISIBLE,0,0);
  412.     this_CWizTab->RedrawWindow();
  413.     //
  414.     //{
  415.     //  CWizTab* tmp;
  416.     //  tmp=this_CWizTab;
  417.     this_CWizTab=this_intCWizTab2;
  418.     //  this_CWizTab2=tmp;
  419.     //}
  420.     //
  421.     this_CWizTab->ModifyStyle(0,WS_VISIBLE,0);
  422.     this_CWizTab->ModifyStyle(WS_DISABLED,0,0);
  423.     this_CSplitterFrame->RedrawWindow();
  424.     this_CWizTab->FinalInProgress();
  425.     // Lancement du miroir
  426.     LaunchMirror();
  427.   } else {      /* Ok, saved, exit (new project) */
  428.     Build_TopIndex();
  429.     this_CSplitterFrame->SetNewView(0,1,RUNTIME_CLASS(CDialogContainer));
  430.   }
  431.  
  432.     return 0;
  433. }
  434.  
  435. void Ctrans::OnDropdownrasid() 
  436. {
  437. #if USE_RAS
  438.   if (!isfilled) {
  439.     isfilled=TRUE;
  440.     InitRAS();
  441.     FillProviderList(1);
  442.   }
  443. #endif
  444. }
  445.  
  446. BOOL Ctrans::OnSetActive( ) {
  447.   this_CWizTab->SetWizardButtons(PSWIZB_BACK|PSWIZB_FINISH);
  448.   WHTT_LOCATION("trans");
  449.   return 1;
  450. }
  451.  
  452. BOOL Ctrans::OnQueryCancel( ) {
  453.   this_CSplitterFrame->SetNewView(0,1,RUNTIME_CLASS(CDialogContainer));
  454.   return 0;
  455. }
  456.  
  457. BOOL Ctrans::OnKillActive( ) {
  458.   UpdateData(TRUE);         // DoDataExchange
  459.   return 1;
  460. }
  461.  
  462. void Ctrans::Onrasdisc() 
  463. {
  464.   InitRAS();
  465. }
  466.